﻿//
//  GLEnumExt.cs
//
//  Author:
//       Anna-Sophia Schröck <annasophia.schroeck@gmail.com>
//
//  Copyright (c) 2014 Anna-Sophia Schröck
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU Lesser General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY, without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
using System;

namespace System.API.OpenGL
{
	public enum GLext
	{
		PROGRAM_OBJECT_ARB = 0x8B40,
		SHADER_OBJECT_ARB = 0x8B48,
		OBJECT_TYPE_ARB = 0x8B4E,
		OBJECT_SUBTYPE_ARB = 0x8B4F,
		FLOAT_VEC2_ARB = 0x8B50,
		FLOAT_VEC3_ARB = 0x8B51,
		FLOAT_VEC4_ARB = 0x8B52,
		INT_VEC2_ARB = 0x8B53,
		INT_VEC3_ARB = 0x8B54,
		INT_VEC4_ARB = 0x8B55,
		BOOL_ARB = 0x8B56,
		BOOL_VEC2_ARB = 0x8B57,
		BOOL_VEC3_ARB = 0x8B58,
		BOOL_VEC4_ARB = 0x8B59,
		FLOAT_MAT2_ARB = 0x8B5A,
		FLOAT_MAT3_ARB = 0x8B5B,
		FLOAT_MAT4_ARB = 0x8B5C,
		SAMPLER_1D_ARB = 0x8B5D,
		SAMPLER_2D_ARB = 0x8B5E,
		SAMPLER_3D_ARB = 0x8B5F,
		SAMPLER_CUBE_ARB = 0x8B60,
		SAMPLER_1D_SHADOW_ARB = 0x8B61,
		SAMPLER_2D_SHADOW_ARB = 0x8B62,
		SAMPLER_2D_RECT_ARB = 0x8B63,
		SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64,
		OBJECT_DELETE_STATUS_ARB = 0x8B80,
		OBJECT_COMPILE_STATUS_ARB = 0x8B81,
		OBJECT_LINK_STATUS_ARB = 0x8B82,
		OBJECT_VALIDATE_STATUS_ARB = 0x8B83,
		OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84,
		OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85,
		OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86,
		OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87,
		OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88,

		// Vertex shader
		VERTEX_SHADER_ARB = 0x8B31,
		MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A,
		MAX_VARYING_FLOATS_ARB = 0x8B4B,
		MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C,
		MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D,
		OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89,
		OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A,

		//Fragment shader
		FRAGMENT_SHADER_ARB = 0x8B30,
		MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49,
		FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B,

		// Geometry shader
		LINES_ADJACENCY_ARB = 0x000A,
		LINE_STRIP_ADJACENCY_ARB = 0x000B,
		TRIANGLES_ADJACENCY_ARB = 0x000C,
		TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D,
		PROGRAM_POINT_SIZE_ARB = 0x8642,
		MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29,
		FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7,
		FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8,
		FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9,
		GEOMETRY_SHADER_ARB = 0x8DD9,
		GEOMETRY_VERTICES_OUT_ARB = 0x8DDA,
		GEOMETRY_INPUT_TYPE_ARB = 0x8DDB,
		GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC,
		MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD,
		MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE,
		MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF,
		MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0,
		MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1,

		DEBUG_OUTPUT_SYNCHRONOUS_ARB               = 0x8242,
		MAX_DEBUG_MESSAGE_LENGTH_ARB               = 0x9143,
		MAX_DEBUG_LOGGED_MESSAGES_ARB              = 0x9144,
		DEBUG_LOGGED_MESSAGES_ARB                  = 0x9145,
		DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB       = 0x8243,
		DEBUG_CALLBACK_FUNCTION_ARB                = 0x8244,
		DEBUG_CALLBACK_USER_PARAM_ARB              = 0x8245,
		DEBUG_SOURCE_API_ARB                       = 0x8246,
		DEBUG_SOURCE_WINDOW_SYSTEM_ARB             = 0x8247,
		DEBUG_SOURCE_SHADER_COMPILER_ARB           = 0x8248,
		DEBUG_SOURCE_THIRD_PARTY_ARB               = 0x8249,
		DEBUG_SOURCE_APPLICATION_ARB               = 0x824A,
		DEBUG_SOURCE_OTHER_ARB                     = 0x824B,
		DEBUG_TYPE_ERROR_ARB                       = 0x824C,
		DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB         = 0x824D,
		DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB          = 0x824E,
		DEBUG_TYPE_PORTABILITY_ARB                 = 0x824F,
		DEBUG_TYPE_PERFORMANCE_ARB                 = 0x8250,
		DEBUG_TYPE_OTHER_ARB                       = 0x8251,
		DEBUG_SEVERITY_HIGH_ARB                    = 0x9146,
		DEBUG_SEVERITY_MEDIUM_ARB                  = 0x9147,
		DEBUG_SEVERITY_LOW_ARB                     = 0x9148,

		PROGRAM_BINARY_RETRIEVABLE_HINT     		= 0x8257,
		PROGRAM_BINARY_LENGTH               		= 0x8741,
		NUM_PROGRAM_BINARY_FORMATS          		= 0x87FE,
		PROGRAM_BINARY_FORMATS              		= 0x87FF,
	}
}

